<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class ReservaM extends CI_Model {

    public function __construct() {
        $this->load->database();
    }

    public function crearNuevaReserva($idCliente, $desde, $hasta, $cantidadPersona, $seguroHotelero) {
        $query = "INSERT INTO reserva(id_cliente, fecha_creacion,estatus,nota,fecha_ingreso,fecha_salida,total_a_pagar,impuesto,total_alojamiento,usuario_creacion,numero_personas,id_establecimiento,ingresos) VALUES('$idCliente',now(),'provicional','','$desde','$hasta','$seguroHotelero','0','0','" . $_SESSION["usuario"]["id_usuario"] . "','$cantidadPersona','" . $_SESSION["establecimiento"]["id_establecimiento"] . "','0')";
        return $this->db->query($query);
    }

    public function consultarReservas($desde, $desde2, $hasta, $hasta2) {
        $query = "SELECT r.id_reserva, r.fecha_ingreso, r.fecha_salida, r.estatus,r.total_a_pagar,r.ingresos, r.usuario_cancelacion,r.nota, rc.id_cuarto,c.nombre, c.apellido,c.telefono,r.checkin_realizado,r.checkout_realizado FROM reserva r,reserva_x_cuarto rc,cliente c WHERE r.id_reserva=rc.id_reserva AND r.id_cliente=c.id_cliente AND (((r.fecha_ingreso between  '$desde' AND '$hasta2') OR (r.fecha_salida  between  '$desde2' AND '$hasta')) OR (r.fecha_ingreso<'$desde' && r.fecha_salida>'$hasta'))  AND r.estatus<>'cancelada' AND r.id_establecimiento='" . $_SESSION["establecimiento"]["id_establecimiento"] . "'";
        //$query = "SELECT r.id_reserva, r.fecha_ingreso, r.fecha_salida, r.estatus,r.total_a_pagar,r.ingresos, r.usuario_cancelacion, rc.id_cuarto,c.nombre, c.apellido,c.telefono,r.checkin_realizado,r.checkout_realizado FROM reserva r,reserva_x_cuarto rc,cliente c WHERE r.id_reserva=rc.id_reserva AND r.id_cliente=c.id_cliente AND ((r.fecha_ingreso between  '$desde' AND '$hasta') OR (r.fecha_salida  between  '$desde' AND '$hasta')  OR (r.fecha_ingreso<$desde && r.fecha_salida>$hasta)) AND r.estatus<>'cancelada' AND r.id_establecimiento='" . $_SESSION["establecimiento"]["id_establecimiento"] . "'";
      //      echo "<br>$query<br>";
        return $this->db->query($query)->result();
    }
    public function consultarHabitacionesBloqueadas($desde, $desde2, $hasta, $hasta2) {
        $query = "SELECT r.id_reserva, r.fecha_ingreso, r.fecha_salida, r.estatus,r.nota,rc.id_cuarto FROM reserva r, reserva_x_cuarto rc WHERE r.estatus='bloqueado' AND r.id_reserva=rc.id_reserva AND (((r.fecha_ingreso between  '$desde' AND '$hasta2') OR (r.fecha_salida  between  '$desde2' AND '$hasta')) OR (r.fecha_ingreso<'$desde' && r.fecha_salida>'$hasta'))  AND r.estatus<>'cancelada' AND r.id_establecimiento='" . $_SESSION["establecimiento"]["id_establecimiento"] . "'";
        //$query = "SELECT r.id_reserva, r.fecha_ingreso, r.fecha_salida, r.estatus,r.total_a_pagar,r.ingresos, r.usuario_cancelacion, rc.id_cuarto,c.nombre, c.apellido,c.telefono,r.checkin_realizado,r.checkout_realizado FROM reserva r,reserva_x_cuarto rc,cliente c WHERE r.id_reserva=rc.id_reserva AND r.id_cliente=c.id_cliente AND ((r.fecha_ingreso between  '$desde' AND '$hasta') OR (r.fecha_salida  between  '$desde' AND '$hasta')  OR (r.fecha_ingreso<$desde && r.fecha_salida>$hasta)) AND r.estatus<>'cancelada' AND r.id_establecimiento='" . $_SESSION["establecimiento"]["id_establecimiento"] . "'";
         //   echo "<br>$query<br>";
        return $this->db->query($query)->result();
    }

    public function consultarReservasPorID($idreserva) {
        $query = "SELECT * FROM reserva r,cliente c WHERE r.id_reserva='$idreserva' AND r.id_cliente=c.id_cliente";
        // echo "<br>$query";
        return $this->db->query($query)->result();
    }

    public function esMiReserva($idReserva, $idEstablecimiento) {
        $query = "SELECT count(*) cantidad FROM reserva where id_reserva='$idReserva' AND id_establecimiento='$idEstablecimiento' AND estatus<>'cancelada'";
        //   echo "<br>$query";
        return $this->db->query($query)->result();
    }

    public function guardarNota($nota, $idReserva) {
        $query = "UPDATE reserva set nota='$nota' where id_reserva='$idReserva'";
        return $this->db->query($query);
    }

    public function actualizarIngresoSalidaCantidadPersonas($ingreso, $salida, $cantidadPersonas, $idReserva) {
        $query = "UPDATE reserva set fecha_ingreso='$ingreso',fecha_salida='$salida',numero_personas='$cantidadPersonas' where id_reserva='$idReserva'";
        echo $query;
        return $this->db->query($query);
    }

    public function atualizarQuienPaga($idCliente, $idReserva) {
        $query = "UPDATE reserva set id_cliente='$idCliente' where id_reserva='$idReserva'";
        return $this->db->query($query);
    }

    public function obtenerDatos($datos, $idReserva) {
        $query = "SELECT $datos FROM reserva where id_reserva='$idReserva'";
        //   echo "<br>$query";
        return $this->db->query($query)->result();
    }

    public function actulizarImpuesto($impuesto, $idReserva) {
        $query = "UPDATE reserva set impuesto='$impuesto' where id_reserva='$idReserva'";
        echo "<br>$query";
        return $this->db->query($query);
    }

    public function hacerCheckin($idReserva, $usuario) {
        $query = "UPDATE reserva set checkin_realizado='1',fecha_check_in=now(),usuario_check_in='$usuario' where id_reserva='$idReserva'";
        return $this->db->query($query);
    }

    public function hacerCheckout($idReserva, $totalReserva, $totalAlojamiento, $usuario) {
        $query = "UPDATE reserva set estatus='fin',checkout_realizado='1',fecha_check_out=now(),total_a_pagar='$totalReserva',total_alojamiento='$totalAlojamiento', usuario_check_out='$usuario' where id_reserva='$idReserva'";
        return $this->db->query($query);
    }

    public function eliminarReserva($idReserva, $usuario) {
        $query = "UPDATE reserva SET estatus='cancelada',fecha_cancelacion=now(),usuario_cancelacion='$usuario' where id_reserva='$idReserva'";
        return $this->db->query($query);
    }

    public function actualizarEstatus($idReserva) {
        $datos = $this->obtenerDatos("total_a_pagar,ingresos", $idReserva);
        $deuda = $datos[0]->total_a_pagar - $datos[0]->ingresos;
        $estatus = "";
        if ($datos[0]->ingresos == 0) {
            $estatus = "provicional";
        }
        if ($datos[0]->ingresos != 0 && $deuda > 0) {
            $estatus = "parcial";
        } else if ($deuda <= 0) {
            $estatus = "completo";
        }
        $query = "UPDATE reserva SET estatus='$estatus' where id_reserva='$idReserva'";
        return $this->db->query($query);
    }

    public function quitarTotalHospedaje($idReserva) {
        $query = "UPDATE reserva SET total_a_pagar=total_a_pagar-total_alojamiento-impuesto where id_reserva='$idReserva'";
        return $this->db->query($query);
    }

    public function quitarImpuestoAlTotalPagar($idReserva) {
        $query = "UPDATE reserva SET total_a_pagar=total_a_pagar-impuesto where id_reserva='$idReserva'";
        return $this->db->query($query);
    }

    public function actualizarTotalPagar($pagar, $idReserva) {
        $query = "UPDATE reserva SET total_a_pagar=total_a_pagar+'$pagar' where id_reserva='$idReserva'";
        return $this->db->query($query);
    }

    public function actualizarIngreso($ingreso, $idReserva) {
        $query = "UPDATE reserva SET ingresos=ingresos+'$ingreso' where id_reserva='$idReserva'";
        return $this->db->query($query);
    }

    public function descontarVenta($valorVenta, $idReserva) {
        $query = "UPDATE reserva SET total_a_pagar=total_a_pagar-'$valorVenta' where id_reserva='$idReserva'";
        return $this->db->query($query);
    }

    public function actualizarTotalHospedaje($valorTotalHospedaje, $idReserva) {
        $query = "UPDATE reserva SET total_alojamiento='$valorTotalHospedaje' where id_reserva='$idReserva'";
        return $this->db->query($query);
    }

    public function verificarFechas($desde, $desde2, $hasta, $hasta2, $idHabitacion, $idReserva) {
        $query = "SELECT count(*) cantidad from reserva r,reserva_x_cuarto rc  WHERE r.id_reserva=rc.id_reserva AND ((r.fecha_ingreso between  '$desde' AND '$hasta2') OR (r.fecha_salida  between  '$desde2' AND '$hasta'))  AND r.estatus<>'cancelada' AND rc.id_cuarto='$idHabitacion' AND r.id_reserva<>'$idReserva' AND r.id_establecimiento='" . $_SESSION["establecimiento"]["id_establecimiento"] . "'";
        return $this->db->query($query)->result();
    }

    public function bloquearHabitacion($desde, $hasta,$nota) {
        $query = "INSERT INTO reserva(fecha_creacion,estatus,fecha_ingreso,fecha_salida,nota,usuario_creacion,id_establecimiento) VALUES(now(),'bloqueado','$desde','$hasta','$nota','" . $_SESSION["usuario"]["id_usuario"] . "','" . $_SESSION["establecimiento"]["id_establecimiento"] . "')";
        $this->db->query($query);
    }

}